export const useRouter = () => {
	const router = {
		toPage: (url, query) => {
			uni.navigateTo({
				url: query ? `${url}?${objectToQueryParams(query)}` : url,
			})
		},
		toTab: (url, query) => {
			uni.switchTab({
				url: query ? `${url}?${objectToQueryParams(query)}` : url,
			})
		},
		closedTo: (url, query) => {
			uni.redirectTo({
				url: query ? `${url}?${objectToQueryParams(query)}` : url,
			})
		},
	}

	function objectToQueryParams(obj) {
		const params = [];
		for (const key in obj) {
			if (obj.hasOwnProperty(key)) {
				params.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]));
			}
		}
		return params.join('&');
	}


	return router
}

/**
 * 获取任意时间
 */
export function getDate(date, AddDayCount = 0) {
	if (!date) {
		date = new Date()
	}
	if (typeof date !== 'object') {
		date = date.replace(/-/g, '/')
	}
	const dd = new Date(date)

	dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期

	const y = dd.getFullYear()
	const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期，不足10补0
	const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号，不足10补0
	return {
		fullDate: y + '-' + m + '-' + d,
		year: y,
		month: m,
		date: d,
		day: dd.getDay()
	}
}


export const msg = (title, duration = 2000, mask = false, icon = 'none') => {
	// 统一提示方便全局修改
	if (Boolean(title) === false) {
		return;
	}
	uni.showToast({
		title,
		duration,
		mask,
		icon
	});
}

export function getUrlValue(value) {
	// 从第一个?开始，且不包括#之后，并截取掉?的部分
	var query = location.search.substring(1);
	// 从#开始的部分，并转换成数组
	var hash = location.hash.split("?");
	// query和hash均没有参数
	if (!query && hash.length < 2) {
		return '';
	}
	// 先取query部分的参数进行匹配
	var vars = query.split("&");
	for (var i = 0; i < vars.length; i++) {
		var pair = vars[i].split("=");
		if (pair[0] == value) {
			return pair[1];
		}
	}
	// query没有参数，或者有参数但没找到，则取hash部分的参数
	if (!hash[1]) {
		return '';
	}
	vars = hash[1].split("&");
	for (var i = 0; i < vars.length; i++) {
		var pair = vars[i].split("=");
		if (pair[0] == value) {
			return pair[1];
		}
	}
	return '';
}